#include<iostream>
#include<stack>
const int N = 1e5 + 10;
int a[N], b[N];
using namespace std;
int main()
{
	int n;cin >> n;
	while (n--)
	{
		int m;cin >> m;
		for (int i = 1; i <= m; i++)
		{
			cin >> a[i];
		}
		for (int i = 1; i <= m; i++)
		{
			cin >> b[i];
		}
		stack<int> st; 
		int j = 1;
		for (int i = 1; i <= m; i++)
		{
			st.push(a[i]);
			while (j <= m && st.size() && st.top() == b[j])
			{
				st.pop();
				j++;
			}
		}
		if (st.size() > 0) cout << "No" << endl;
		else cout << "Yes" << endl;
	}
	return 0;
}
//#include<iostream>
//#include<stack>
//const int N = 1e6 + 10;
//int in[N], out[N], x,y;
//using namespace std;
//int main()
//{
//	stack<int> st;
//	int flag = 1, n, m;cin >> n;
//	while (n--)
//	{
//		flag = 1;
//		cin >> m;
//		for(int i = 0 ; i < m; i++)
//		{
//			cin >> x;
//			st.push(x);
//		}
//		for(int i = 0 ; i < m; i++)
//		{
//			cin >> y;
//			if (st.top() == y) st.pop();
//			else
//			{
//				st.pop();
//				flag = 0;
//			}
//		}
//		if (flag == 0) cout << "No" << endl;
//		else cout << "Yes" << endl;
//	}
//	return 0;
//}